/******************************************************************************
* 文件名称: uds_tp.h
* 内容摘要: UDS 诊断网络/传输层头文件
* 创建者の: 孔佳伟
* 个人主页: https://gitee.com/thin-wind/jump
* 修改记录: 
******************************************************************************/


#ifndef __UDS_TP_H_
#define __UDS_TP_H_

#include <stdint.h>

#define GET_FROM_ID     0x123
#define SEND_TO_ID      0x666

#define DEFAULT_ST      5       // 用于通知发送方多帧发送的默认最小时间间隔，单位：ms

#define PADDING_BYTE    0xFF    // 填充值，发送 can 报文时有效数据不满 8 字节的其余位用该值填充

typedef void (*pRxcomplFunc)(uint8_t* buf, uint8_t len);
typedef void (*pTxcomplFunc)(uint8_t err);


#ifdef __cplusplus
extern "C" {
#endif

// 接收注册
int UdsTpRecvReg(uint8_t* rxbuf, uint16_t rxlen, pRxcomplFunc rxComplCallback);

// 发送
int UdsTpSend(uint8_t* txbuf, uint16_t txlen, pTxcomplFunc txComplCallback);

// 设置通知发送方连续帧发送的最小时间间隔，单位：ms
void SetSeparationTime(uint8_t st);

// 获取通知发送方连续发送的最小时间间隔，单位：ms
uint8_t GetSeparationTime(void);

// UDS TP 层 1ms 任务
void UdsTp1msTask(void);


#ifdef __cplusplus
}
#endif


#endif // __UDS_TP_H_

